/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package compilador.analisadorLexico.automatos;

import compilador.analisadorLexico.CodeReader;
import compilador.tabelaDeSimbolos.Identificador;
import compilador.analisadorLexico.Token;
import compilador.analisadorLexico.TokenClass;

/**
 *
 * @author matheus.mcas
 */
public class AutomatoLetra implements IAutomato{
//    private final int INITIAL_STATE = 10; //estado inicial
//
//    private final int ACCEPTANCE_STATE = 11; //estado de aceitação     
//
//    private final int REJECTION_STATE = -1; //estado de rejeição

    private CodeReader reader;

    public AutomatoLetra() {
    }

    public AutomatoLetra(CodeReader reader) {
        this.reader = reader;
    }

    public Token extraiToken() {
        
        reader.clear();
        Character lexema = reader.next();
        
        try {
            if (Character.isLetter(lexema)) { 
                lexema = reader.next();
                return new Token(TokenClass.IDENTIFICADOR, new Identificador(reader.closeToken()),reader.getCurrentLine());
            } else {                
                return null;
            }
        } catch (NullPointerException e) {            
            return null;
        }
    }
    
//    public Token recognize(Character lexema) {
//
//        try {
//            if (Character.isLetter(lexema)) {
//                return new Token(TOKEN_DEFINITION_ID, String.valueOf(lexema));
//            } else {
//                return null;
//            }
//        } catch (NullPointerException e) {
//            return null;
//        }
//    }
}
